package com.xing.binbackend.pattern.strategy33.ecommerce.pay;

public class Client {
    public static void main(String[] args) {
        // 运行时动态切换策略
        PaymentContext context1 = new PaymentContext(new AlipayStrategy());
        context1.executePayment(100.0); // 输出：支付宝支付：100.0元

        PaymentContext context2 = new PaymentContext(new WechatPayStrategy(true));
        context2.executePayment(200.0); // 输出：微信支付：200.0元

//      需要根据运行时参数选择策略的场景（如根据用户输入选择支付方式），此时补充一个策略工厂会更完整：
        String userChoice = "alipay"; // 来自用户输入
        PaymentContext context = new PaymentContext(PaymentStrategyFactory.getStrategy(userChoice));
        context.executePayment(500.0);

        // 多组数据
        new PaymentContextNew.Builder().setStrategyType("alipay").build().executePayment(100.0);

        // 示例2：带参数的策略
        new PaymentContextNew.Builder().setStrategyType("wechat").addParam("useSandbox", true).build().executePayment(200.0);
    }
}
